package com.cy.pj.common.util;

import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;

import javax.servlet.http.HttpServletRequest;

/**
 * 定义分页操作工具类，在此类方法启动分页查询
 *
 * 写工具类要有目标
 */
//类中的泛型才可以约束方法的泛型
public class PageUtil {
//    因为在controller类中有返回值，返回类型为Page,若类没有加泛型 我们需要在方法的左侧加泛型约束方法
    public static <T>Page<T> startPage(){//new PageUtil().startPage 我们用static方法顶替，直接使用类名调用
////       4、获取请求对象 RequestContextHolder 请求持有者 获取到对象才能使用request
//        ServletRequestAttributes sra =
//                (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
////        调用请求对象的getRequest（）方法
//        HttpServletRequest request = sra.getRequest();
//        因为在ServletUtil中的.getRequest()获取了etRequestAttributes()
        HttpServletRequest request = ServletUtil.getRequest();
        //        HttpServletRequest request = null;
//        2、通过reques 获取"pageCurrent"，"pageSize 参数对象
            String pageCurrentStr = request.getParameter("pageCurrent");
            String pageSizeStr = request.getParameter("pageSize");

//        3、当 pageCurrentStr为空时默认等于1，若不是为空则为返回的值
//        int pageCurrent = pageCurrentStr == null||"".equals(pageCurrentStr)?1: Integer.parseInt(pageCurrentStr);
//        int pageSize = pageSizeStr == null ||"".equals(pageCurrentStr)?10:Integer.parseInt(pageSizeStr);

//      5、  通过工具类优化后
        int pageCurrent = StringUtil.isEmpty(pageCurrentStr)?1:Integer.parseInt(pageCurrentStr);
        int pageSize = StringUtil.isEmpty(pageSizeStr)?10:Integer.parseInt(pageSizeStr);
        //        1、先找到重复调用的语句 启动分页拦截器
        return PageHelper.startPage(pageCurrent, pageSize);

    }
}
